home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 16
/
Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso
/
Aminet
/
misc
/
emu
/
QDOS2.lha
/
QLsource
/
ROMsrc
/
SYS
/
PROCS10_asm
< prev
next >
Wrap
Text File
|
1995-08-27
|
35KB
|
1,747 lines
*/beginfile PROCS10_asm
; --------------------------------------------------------------
; PROCS10_asm - BASIC procedure and function definitions
; - last modified 27/08/95
; QDOS-Amiga sources by Rainer Kowallik
; ...some changes by Mark J Swift
; --------------------------------------------------------------
BAS_DLINe:
CMPA.L A5,A3
BGE L0750E
ST D7
JSR L07E30(PC) ;*/undomodify BSR L07E30
BEQ.S L07476
ST $00B8(A6)
L07474 RTS
L07476 BSR.S L0747A
BRA.S L07492
L0747A MOVEQ #$02,D1
JMP L065E8(PC) ;*/undomodify BRA L065E8
BAS_LIST:
BSR.S L0747A
BLT.S L07474
L07484 ST BV_PRINT(A6) ;Print from prtok
;($ff) or leave in buffer
CLR.W $BA(A6)
CMPA.L A5,A3
BGE L07512
L07492 MOVE.L A5,-(A7)
L07494 CMPA.L (A7),A3
BGE.S L074DE
BSR.S L07452
BNE.S L074A0
MOVEQ #0,D4
BRA.S L074A6
L074A0 BSR.S L074F0
BNE.S L074DA
MOVE.W D1,D4
L074A6 SUBQ.B #5,D5
BEQ.S L074B6
ADDQ.B #5,D5
MOVE.W D4,D6
BNE.S L074CE
TST.B D7
BNE.S L07494
BRA.S L074BE
L074B6 CMPA.L (A7),A3
BGE.S L074BE
BSR.S L07452
BNE.S L074C4
L074BE MOVE.W #$7FFF,D6
BRA.S L074CE
L074C4 BSR.S L074F0
BNE.S L074DA
MOVE.W D1,D6
CMP.W D4,D6
BLT.S L074DA
L074CE BSR.S TKN_LIST
CMPI.B #$01,D5
BEQ.S L07494
TST.B D5
BEQ.S L074DE
L074DA MOVEQ #-$0F,D0
BRA.S L074EC
L074DE TST.B D7
BEQ.S L074EA
MOVEQ #0,D2
MOVEQ #0,D5
JSR L08FE6(PC) ;*/undomodify BSR L08FE6
L074EA MOVEQ #0,D0
L074EC MOVEA.L (A7)+,A5
RTS
L074F0 MOVEA.L A3,A5
JSR L05EC8(PC) ;*/undomodify BSR L05EC8
BNE.S L07510
MOVEQ #$03,D0
JSR L05996(PC) ;*/undomodify BSR L05996
BNE.S L07510
ADDQ.L #2,BV_RIP(A6) ;arith stack
MOVE.W 0(A6,A1.L),D1
BGT.S L0750E
MOVEQ #-15,D0 ;Bad parameter
RTS
L0750E MOVEQ #0,D0
L07510 RTS
L07512 MOVEQ #0,D4
MOVE.W #$7FFF,D6
TKN_LIST ;Convert precompiled BASIC to ASCII text
MOVEA.L BV_PFBAS(A6),A4 ;program file
CLR.L BV_LINUM(A6) ;current line #
TST.W D4
BEQ.S L07530
MOVE.L A0,-(A7)
JSR L09FBE(PC) ;*/undomodify BSR L09FBE
MOVEA.L (A7)+,A0
MOVE.W D2,BV_LINUM(A6) ;current line #
L07530 TST.B D7
BNE.S L0753C
LEA TB_LIST(PC),A2
JMP L090B6(PC) ;*/undomodify BRA L090B6
L0753C CMP.W 4(A6,A4.L),D6
BLT.S L0750E
MOVE.L A4,-(A7)
MOVE.W BV_LENGTH(A6),-(A7) ;current length
L07548 CMPA.L BV_PFP(A6),A4 ;program running ptr
BGE.S L07588
MOVE.W 0(A6,A4.L),D1
ADDQ.W #2,A4
ADD.W D1,BV_LENGTH(A6) ;current length
ADDA.W BV_LENGTH(A6),A4 ;current length
CMP.W $04(A6,A4.L),D6
BGE.S L07548
MOVE.W 0(A6,A4.L),D1
ADD.W BV_LENGTH(A6),D1 ;current length
SUB.W (A7)+,D1
MOVE.W D1,0(A6,A4.L)
MOVEA.L (A7)+,A2
L07572 MOVE.W 0(A6,A4.L),0(A6,A2.L)
ADDQ.W #2,A4
ADDQ.W #2,A2
CMPA.L BV_PFP(A6),A4 ;program running ptr
BLT.S L07572
MOVE.L A2,BV_PFP(A6) ;program running ptr
L07586 BRA.S L0750E
L07588 ADDQ.W #2,A7
MOVE.L (A7)+,BV_PFP(A6) ;program running ptr
BRA.S L07586
; --------------------------------------------------------------
;*/beginoverlay
; fix for MRUN, LOAD and LRUN. If command channel is not #0,
; do a close before opening to a different input channel.
L07E20fix:
move.l BV_COMCH(a6),d0 ;BASICs Command channel
beq.s L07E20o
move.l d0,a0
moveq #2,d0 ;IO.CLOSE close channel
trap #2
clr.l BV_COMCH(a6) ;Set Command channel to #0
L07E20o:
moveq #$01,d4
jsr L069C4(pc)
bne.s L07E2Eo
move.l a0,BV_COMCH(a6) ;Command channel
moveq #0,d0
L07E2Eo:
rts
;*/removecode BAS_MODE:
;*/removecode JSR GET_INT2(PC)
;*/removecode BNE.S L075AC
;*/removecode ADDQ.L #2,BV_RIP(A6)
;*/removecode MOVE.W #$0108,D1
;*/removecode AND.W D1,0(A6,A1.L)
;*/removecode BNE.S L075A6
;*/removecode MOVEQ #0,D1
;*/removecode L075A6:
;*/removecode MOVEQ #-1,D2
;*/removecode MOVEQ #$10,D0
;*/removecode TRAP #1
;*/removecode L075AC:
;*/removecode RTS
;*/removecode L075AE:
;*/removecode BAS_NET:
;*/removecode JSR GET_INT2(PC)
;*/removecode BNE.S L075C4
;*/removecode ADDQ.L #2,BV_RIP(A6)
;*/removecode MOVE.B 1(A6,A1.L),D1
;*/removecode BLE.S L075C6
;*/removecode MOVE.B D1,$28037
;*/removecode L075C4 RTS
;*/removecode L075C6 MOVEQ #-15,D0
;*/removecode RTS
NOP075CA:
DCB.w ($75CA-(NOP075CA-ORG0))/2,$4E71
;*/endoverlay
; --------------------------------------------------------------
BAS_INK:
MOVEQ #$29,D4
BRA.S DO_BAS_Col
BAS_STRIp:
MOVEQ #$28,D4
BRA.S DO_BAS_Col
BAS_PAPEr:
MOVEQ #$27,D4
DO_BAS_Col:
JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L075EE
BSR L07FD4
BNE.S L075EE
CMPI.B #$27,D4
BNE.S L075EA
BSR.S L075EA
MOVEQ #$28,D4
L075EA JMP L07FC4(PC) ;*/undomodify BRA L07FC4
L075EE RTS
BAS_CLS:
MOVEQ #$20,D4
BRA.S L075FA
BAS_PAN:
MOVEQ #$1B,D4
BRA.S L075FA
BAS_SCROll:
MOVEQ #$18,D4
L075FA JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L07642
MOVE.W 0(A6,A1.L),D1
CMPI.B #$20,D4
BEQ.S L0760E
SUBQ.L #2,A1
SUBQ.L #1,D3
L0760E SUBQ.W #1,D3
BHI.S L07640
BLT.S L0762C
MOVE.W D4,D3
SUBI.W #$0017,D3
LSR.W #2,D3
LEA L07644(PC),A2
BTST D1,0(A2,D3.W)
BEQ.S L07640
ADD.L D1,D4
MOVE.W 0(A6,A1.L),D1
L0762C JSR L090A2(PC) ;*/undomodify BSR L090A2
BNE.S L0763C
MOVE.L BV_LNBAS(A6),$0044(A6) ;line # table
CLR.W BV_LSBAS(A6) ;Bottom line in window
L0763C JMP L07FC4(PC) ;*/undomodify BRA L07FC4
L07640 MOVEQ #-$0F,D0
L07642 RTS
L07644 BTST D3,(A1)+
MOVE.B D0,-(A7)
BAS_PAUSe:
JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
SUBQ.W #1,D3
BLT.S L0765A
BGT.S L07668
ADDQ.L #2,BV_RIP(A6) ;arith stack
MOVE.W 0(A6,A1.L),D3
L0765A MOVEQ #0,D1
JSR L0661E(PC) ;*/undomodify BSR L0661E
MOVEQ #1,D0 ;IO.FBYTE fetch a byte
TRAP #3
MOVEQ #0,D0
RTS
L07668 MOVEQ #-15,D0
RTS
BAS_POKE:
MOVEQ #0,D4 ;here we do not need even
;address
BSR.S L07682
MOVE.B D1,(A4)
RTS
POKE_W:
BSR.S L07680
MOVE.W D1,(A4)
RTS
POKE_L:
BSR.S L07680
MOVE.L D1,(A4)
RTS
L07680 MOVEQ #$01,D4 ;Check for even address
L07682 JSR CA_GTLIN(PC) ;*/undomodify BSR CA_GTLIN
BNE.S L076A4
SUBQ.W #2,D3
BNE.S L076A0
ADDQ.L #8,BV_RIP(A6) ;arith stack
MOVEA.L 0(A6,A1.L),A4
MOVE.L 4(A6,A1.L),D1
MOVE.L A4,D0
AND.L D4,D0 ;address odd ?
BNE.S L076A0
RTS
L076A0 ADDQ.W #4,A7
MOVEQ #-15,D0 ;bad parameter error
L076A4 RTS
BAS_INPUt:
ST D7
BAS_PRINt:
JSR L04E4C(PC) ;*/undomodify BSR L04E4C
MOVEQ #0,D4
JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE L0784E
MOVE.L A5,-(A7)
MOVEA.L A2,A5
MOVEQ #0,D5
TST.B D7
BEQ.S L076D0
MOVEQ #$0B,D0
MOVEA.L (A6),A1
BSR L0796E
CMPI.W #$FFF1,D0
BNE.S L076D0
MOVEQ #$01,D7
L076D0 CMPA.L (A7),A3
BGE L0783E
MOVE.B $01(A6,A3.L),D0
MOVE.B D0,D5
LSR.B #4,D5
ANDI.B #$0F,D0
BNE.S L076F2
TST.B 0(A6,A3.L)
BNE.S L076F2
BSR L0795A
BRA L07832
L076F2 TST.W $02(A6,A3.L)
SGE D1
AND.B D7,D1
BEQ.S L07714
MOVE.W D0,-(A7)
BSR L0795A
MOVE.W (A7)+,D0
MOVEA.L (A7),A4
JSR L07A0C(PC) ;*/undomodify BSR L07A0C
BNE L07850
MOVE.L A4,(A7)
BRA L07832
L07714 TST.B D7
BGT L07838
MOVEA.L BV_VVBAS(A6),A0 ;variable values
MOVE.L $04(A6,A3.L),D1
BLT L07828
ADDA.L D1,A0
CMPI.B #$03,0(A6,A3.L)
BNE L07824
TST.B D5
BEQ.S L07740
CMPI.B #$05,D5
BNE.S L07742
SWAP D5
BRA.S L07742
L07740 MOVEQ #$03,D5
L07742 MOVE.B D0,-(A7)
MOVEA.L A0,A2
BSR L0781A
SUBA.L BV_VVBAS(A6),A2 ;variable values
SUBA.L BV_CHBAS(A6),A5 ;channel name
MOVEM.L A2-A3/A5,-(A7)
JSR L04DF6(PC) ;*/undomodify BSR L04DF6
MOVEM.L (A7)+,A2-A3/A5
ADDA.L BV_CHBAS(A6),A5 ;channel name
ADDA.L BV_VVBAS(A6),A2 ;variable values
MOVEA.L A0,A4
L07768 SUBQ.W #1,D1
LEA 0(A4,D1.W),A1
SF 0(A6,A1.L)
BNE.S L07768
MOVE.W $04(A6,A2.L),D1
MOVE.B (A7),D0
SUBQ.B #2,D0
BLT.S L07788
BEQ.S L07784
MOVEQ #$02,D0
BRA.S L0778C
L07784 MOVEQ #$06,D0
BRA.S L0778C
L07788 SUBQ.W #1,D1
MOVEQ #$01,D0
L0778C MOVE.W D0,0(A6,A4.L)
LSL.W #1,D1
MOVE.W D1,$02(A6,A4.L)
L07796 MOVEA.L BV_VVBAS(A6),A0 ;variable values
ADDA.L 0(A6,A2.L),A0
MOVE.W $04(A6,A2.L),D0
LSL.W #2,D0
LEA 2(A2,D0.W),A1
MOVE.W 0(A6,A1.L),D3
LSR.W #1,D0
L077AE LEA 2(A4,D0.W),A1
MOVE.W 0(A6,A1.L),D1
LSL.W #1,D0
LEA 4(A2,D0.W),A1
LSR.W #1,D0
MULU 0(A6,A1.L),D1
MULU 0(A6,A4.L),D1
ADDA.L D1,A0
SUBQ.W #2,D0
BNE.S L077AE
MOVE.B (A7),D0
BSR L0785E
BNE.S L077FE
MOVE.W $02(A6,A4.L),D0
BEQ.S L077FE
L077DA LSL.W #1,D0
LEA 2(A2,D0.W),A1
MOVE.W 0(A6,A1.L),D1
LSR.W #1,D0
LEA 2(A4,D0.W),A1
CMP.W 0(A6,A1.L),D1
BEQ.S L077F6
ADDQ.W #1,0(A6,A1.L)
BRA.S L07796
L077F6 CLR.W 0(A6,A1.L)
SUBQ.W #2,D0
BNE.S L077DA
L077FE BSR.S L0781A
MOVEA.L A4,A0
MOVE.L D0,-(A7)
MOVE.L A3,-(A7)
JSR L04FE8(PC) ;*/undomodify BSR L04FE8
MOVEA.L (A7)+,A3
MOVE.L (A7)+,D0
ADDQ.W #2,A7
BNE.S L0784C
TST.B D5
BNE.S L07838
SWAP D5
BRA.S L07832
L0781A MOVEQ #$02,D1
ADD.W $04(A6,A2.L),D1
LSL.W #1,D1
RTS
L07824 BSR.S L0785E
BRA.S L07836
L07828 BSR L0795A
MOVEQ #$2A,D1
BSR L07960
L07832 BSR L078E0
L07836 BNE.S L0784C
L07838 ADDQ.W #8,A3
BRA L076D0
L0783E TST.B D5
BNE.S L0784A
TST.B D7
BGT.S L0784A
BSR L07934
L0784A MOVEQ #0,D0
L0784C MOVEA.L (A7)+,A5
L0784E RTS
L07850 MOVE.L A4,(A7)
MOVE.L D0,-(A7)
MOVEQ #$0F,D0
BSR L07970
MOVE.L (A7)+,D0
BRA.S L0784C
L0785E MOVEA.L BV_RIP(A6),A1 ;arith stack
SUBQ.W #6,A1
TST.B D0
BEQ.S L07878
SUBQ.B #2,D0
BGT.S L0787E
BEQ.S L0788E
MOVE.W 0(A6,A0.L),D2
MOVEA.L A0,A1
ADDQ.W #2,A1
BRA.S L078AA
L07878 MOVEA.L A0,A1
MOVE.W D3,D2
BRA.S L078AA
L0787E MOVE.W 0(A6,A0.L),0(A6,A1.L)
MOVEA.L (A6),A0
ADDQ.W #1,A0
JSR CN_ITOD(PC) ;*/undomodify BSR CN_ITOD
BRA.S L078A2
L0788E MOVE.L $02(A6,A0.L),$02(A6,A1.L)
MOVE.W 0(A6,A0.L),0(A6,A1.L)
MOVEA.L (A6),A0
ADDQ.W #1,A0
JSR CN_FTOD(PC) ;*/undomodify BSR CN_FTOD
L078A2 MOVEA.L (A6),A1
ADDQ.W #1,A1
MOVE.L A0,D2
SUB.L A1,D2
L078AA TST.B D4
BEQ.S L078D2
SWAP D4
ADDQ.W #1,D2
SUBQ.W #1,A1
MOVE.B 0(A6,A1.L),-(A7)
SUB.W D2,D4
BLT.S L078C4
MOVE.B #$20,0(A6,A1.L)
BRA.S L078D0
L078C4 MOVE.B #$0A,0(A6,A1.L)
MOVE.W #$FFFF,$20(A6,A5.L)
L078D0 SWAP D4
L078D2 BSR L07968
TST.B D4
BEQ.S L078E0
SUBA.W D2,A1
MOVE.B (A7)+,0(A6,A1.L)
; --------------------------------------------------------------
*/beginoverlay
ifd NoTas
L078E0:
BSET #7,BV_BRK(A6) ;*/mend TAS BV_BRK(A6)
;There has been a
;break (0) or not ($80)
BNE.S o078E8
MOVEQ #-$01,D0
o078E8 TST.L D0
BNE.S L07958
TST.B D7
BGT.S L07956
SF D4
MOVE.B D5,D0 ;*/insert
SUBQ.B #$01,D0 ;*/modify CMPI.B #$01,D5
BEQ.S L0793E
SUBQ.B #$02,D0 ;*/modify CMPI.B #$03,D5
BEQ.S L07934
endc
ifnd NoTas
L078E0:
TAS BV_BRK(A6)
BNE.S L078E8
MOVEQ #$-$01,D0
L078E8
TST.L D0
BNE.S L07958
TST.B D7
BGT.S L07956
SF D4
CMPI.B #$01,D5
BEQ.S L0793E
CMPI.B #$03,D5
BEQ.S L07934
endc
*/endoverlay
; --------------------------------------------------------------
CMPI.B #$04,D5
BEQ.S L07926
CMPI.B #$05,D5
BNE.S L07956
MOVE.L A5,-(A7)
ADDQ.W #8,A3
LEA 8(A3),A5
JSR GET_INT2(PC) ;*/undomodify BSR GET_INT2
MOVEA.L (A7)+,A5
BNE.S L07958
MOVE.W 0(A6,A1.L),D2
ADDQ.L #2,BV_RIP(A6) ;arith stack
BSR.S L0797A
BRA.S L0794A
L07926 BSR.S L0797A
SUB.W D0,D1
MOVE.W D1,D4
SWAP D4
TST.W D0
SNE D4
BRA.S L07956
L07934 MOVEQ #$0A,D1
BSR.S L07960
CLR.W $20(A6,A5.L)
BRA.S L07956
L0793E BSR.S L0797A
MOVE.W D0,D2
ADDQ.W #8,D2
ANDI.W #$00F8,D2
SUBQ.W #8,D1
L0794A SUB.W D2,D1
BLT.S L07934
SUB.W D0,D2
L07950 BSR.S L0795E
SUBQ.W #1,D2
BGT.S L07950
L07956 MOVEQ #0,D0
L07958 RTS
L0795A TST.B D4
BEQ.S L07958
L0795E MOVEQ #$20,D1 ;Send a blank
L07960 MOVEQ #5,D0 ;IO.SBYTE send a byte
ADDQ.W #1,$20(A6,A5.L)
BRA.S L07970
L07968 MOVEQ #7,D0 ;IO.SSTRG sends a string of
;bytes
ADD.W D2,$20(A6,A5.L) ;number of bytes to be send
L0796E TRAP #4
L07970 MOVEQ #-1,D3
MOVEA.L 0(A6,A5.L),A0
TRAP #3
RTS
L0797A MOVEQ #$0B,D0
MOVEA.L (A6),A1
BSR.S L0796E
TST.L D0
BNE.S L0798E
MOVE.W $04(A6,A1.L),D0
MOVE.W 0(A6,A1.L),D1
RTS
L0798E MOVE.W $22(A6,A5.L),D1
MOVE.W $20(A6,A5.L),D0
RTS
BAS_RANDomise:
JSR CA_GTLIN(PC) ;*/undomodify BSR CA_GTLIN
BNE.S L079BE
SUBQ.W #1,D3
BGT.S L079C0
BEQ.S L079AA
MOVEQ #$13,D0 ;SD.PCOL position cursor on
;previous char column
TRAP #1
BRA.S L079B4
L079AA MOVE.L 0(A6,A1.L),D1
ADDQ.L #4,BV_RIP(A6) ;arith stack
MOVEQ #0,D0
L079B4 MOVE.L D1,D2
SWAP D1
ADD.L D2,D1
MOVE.L D1,BV_RAND(A6) ;Random number
L079BE RTS
L079C0 MOVEQ #-$0F,D0
RTS
L079C4 MOVE.L D0,-(A7)
MOVEQ #0,D4
L079C8 MOVEQ #4,D0
TRAP #4
MOVEA.L BV_BFP(A6),A1 ;buffer running ptr
MOVE.L BV_TKBAS(A6),D2 ;token list
SUB.L (A6),D2
MOVE.L A1,D1
SUB.L (A6),D1
MOVE.W D1,D4
MOVE.L D4,D1
TST.L (A7)
BEQ.S L079E6
MOVEQ #2,D0 ;IO.FLINE fetch line of
;chars terminated by <LF>
SUB.W D1,D2
L079E6 MOVEQ #-1,D3
TRAP #3
TST.L D0
BGE.S L07A06
CMPI.B #$FB,D0
BNE.S L07A06
MOVE.L D1,D4
MOVE.L A1,BV_BFP(A6) ;buffer running
MOVE.L A0,-(A7)
MOVEQ #$7E,D1
JSR L04E6A(PC) ;*/undomodify BSR L04E6A
MOVEA.L (A7)+,A0
BRA.S L079C8
L07A06 ADDQ.W #4,A7
L07A08 TST.L D0
RTS
L07A0C MOVE.L D7,-(A7)
MOVE.W D0,-(A7)
BSR.S L07A8E
BEQ.S L07A1A
L07A14 ADDQ.W #2,A7
L07A16 MOVE.L (A7)+,D7
BRA.S L07A08
L07A1A MOVEA.L 0(A6,A5.L),A0
MOVE.L (A6),BV_BFP(A6)
TST.B D7
SGT D0
SUBA.L BV_TKBAS(A6),A3 ;token list
SUBA.L BV_TKBAS(A6),A4 ;token list
SUBA.L BV_TKBAS(A6),A5 ;token list
MOVEM.L A3-A5,-(A7)
BSR.S L079C4
MOVEM.L (A7)+,A3-A5
ADDA.L 8(A6),A3
ADDA.L 8(A6),A4
ADDA.L 8(A6),A5
BNE.S L07A14
MOVE.L A3,-(A7)
MOVEQ #$13,D0 ;SD.PCOL position cursor on
;previous column
TRAP #3
MOVEQ #$14,D0 ;SD.NCOL position cursor on
;next column
TRAP #3
MOVEA.L (A7)+,A3
MOVEA.L (A6),A0
MOVE.L A1,D7
MOVEA.L BV_RIP(A6),A1 ;arith stack
MOVE.W (A7)+,D0
SUBQ.B #2,D0
BLT.S L07A74
BEQ.S L07A6C
JSR CN_DTOI(PC) ;*/undomodify BSR CN_DTOI
BRA.S L07A70
L07A6C JSR CN_DTOF(PC) ;*/undomodify BSR CN_DTOF
L07A70 BNE.S L07A16
BRA.S L07A7C
L07A74 MOVEA.L D7,A0
SUBQ.W #1,A0
JSR L05A20(PC) ;*/undomodify BSR L05A20
L07A7C MOVE.L A1,BV_RIP(A6) ;arith stack
SUBA.L BV_CHBAS(A6),A5 ;channel name
JSR BP_LET(PC) ;*/undomodify BSR BP_LET
ADDA.L BV_CHBAS(A6),A5 ;channel name
BRA.S L07A16
L07A8E MOVE.B 0(A6,A3.L),D0
SUBQ.B #2,D0
BLE.S L07AC0
SUBQ.B #1,D0
BNE.S L07AB8
MOVE.B 1(A6,A3.L),D0
ANDI.B #$0F,D0
SUBQ.B #1,D0
BGT.S L07AC8
MOVEA.L 4(A6,A3.L),A2
ADDA.L BV_VVBAS(A6),A2 ;variable values
CMPI.W #1,4(A6,A2.L)
BGT.S L07AC8
BRA.S L07AC0
L07AB8 SUBQ.B #3,D0
BLT.S L07AC4
SUBQ.B #1,D0
BGT.S L07AC4
L07AC0 MOVEQ #0,D0
RTS
L07AC4 MOVEQ #-12,D0 ;bad name
RTS
L07AC8 MOVEQ #-19,D0 ;not implemented
RTS
BAS_RECOl:
JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L07AF4
CMPI.W #8,D3
BNE.S L07AF2
MOVEA.L A1,A2
MOVEQ #$07,D0
L07ADC MOVE.B $01(A6,A2.L),$01(A6,A1.L)
SUBQ.W #2,A2
SUBQ.W #1,A1
DBF D0,L07ADC
ADDQ.W #2,A1
MOVEQ #$26,D4
JMP L07FC4(PC) ;*/undomodify BRA L07FC4
L07AF2 MOVEQ #-$0F,D0
L07AF4 RTS
BAS_EDIT:
MOVEQ #0,D4
BRA.S L07AFC
BAS_AUTO:
MOVEQ #$0A,D4
L07AFC ST BV_AUTO(A6) ;AUTO/EDIT on ($ff) or off (0)
TST.B BV_UNRVL(A6) ;Need to unravel
;($ff) or not (0)
BNE.S L07B32
BRA.S L07B26
L07B08 MOVEQ #0,D5
CMPA.L $0004(A7),A3
BEQ.S L07B20
JSR L07452(PC) ;*/undomodify BSR L07452
BEQ.S L07B20
JSR L074F0(PC) ;*/undomodify BSR L074F0
BEQ.S L07B22
ADDQ.W #4,A7
BRA.S L07B84
L07B20 MOVEQ #$01,D0
L07B22 RTS
BAS_RENUm:
MOVEQ #$0A,D4
L07B26 JSR L07E30(PC) ;*/undomodify BSR L07E30
BEQ.S L07B32
ST $00B8(A6)
RTS
L07B32 MOVE.L A5,-(A7)
MOVE.W #$7FFF,D7
MOVEQ #$64,D6
SWAP D4
BSR.S L07B08
CMPI.B #$05,D5
BNE.S L07B5A
TST.B D0
BNE.S L07B4A
MOVE.W D1,D4
L07B4A BSR.S L07B08
CMPI.B #$02,D5
BNE.S L07B84
TST.B D0
BNE.S L07B66
MOVE.W D1,D7
BRA.S L07B66
L07B5A CMPI.B #$02,D5
BNE.S L07B68
TST.B D0
BNE.S L07B66
MOVE.W D1,D4
L07B66 BSR.S L07B08
L07B68 TST.B D0
BNE.S L07B6E
MOVE.W D1,D6
L07B6E SWAP D4
CMPI.B #$01,D5
BNE.S L07B7C
BSR.S L07B08
BNE.S L07B7C
MOVE.W D1,D4
L07B7C MOVE.W D4,D3
SWAP D4
TST.B D5
BEQ.S L07B94
L07B84 SF BV_AUTO(A6) ;AUTO/EDIT on ($ff) or off (0)
ADDQ.W #4,A7
MOVEQ #-$0F,D0
RTS
L07B8E ADDQ.W #2,A7
MOVEQ #-$04,D0
RTS
L07B94 MOVE.W D7,D5
ADDQ.W #4,A7
TST.B BV_AUTO(A6) ;AUTO/EDIT on ($ff) or off (0)
BEQ.S L07BAA
MOVE.W D6,BV_EDLIN(A6) ;line # to edit next
MOVE.W D3,BV_EDINC(A6) ;Increment on edit range
L07BA6 MOVEQ #0,D0
RTS
L07BAA MOVEA.L BV_PFBAS(A6),A4 ;program file
CMPA.L BV_PFP(A6),A4 ;program running ptr
BGE.S L07BA6
CLR.W -(A7)
CLR.L BV_LINUM(A6) ;current line #
TST.W D4
BEQ.S L07BD8
JSR L09FBE(PC) ;*/undomodify BSR L09FBE
CMPA.L (A6),A4
BEQ.S L07BD8
SUBA.W BV_LENGTH(A6),A4 ;current length
MOVE.W $02(A6,A4.L),D2
CMP.W D2,D6
BLE.S L07B8E
ADDA.W BV_LENGTH(A6),A4 ;current length
MOVE.W D2,(A7)
L07BD8 MOVEQ #0,D0
L07BDA ADDQ.W #1,D0
BSR.S L07C4E
BEQ.S L07BDA
BGT.S L07BE6
MOVE.W #$7FFF,D2
L07BE6 MOVE.L D0,D1
SUBQ.W #1,D1
MULU D3,D1
ADD.L D6,D1
EXT.L D2
CMP.L D2,D1
BGE.S L07B8E
MOVE.W D2,-(A7)
MOVEQ #$02,D1
ADD.L D0,D1
LSL.L #2,D1
JSR L04DF6(PC) ;*/undomodify BSR L04DF6
MOVEA.L A0,A3
SUBA.L BV_VVBAS(A6),A3 ;variable values
MOVE.L D1,0(A6,A0.L)
SUBA.W BV_LENGTH(A6),A4 ;current length
MOVE.W 2(A6,A4.L),BV_LINUM(A6) ;current line #
ADDA.W BV_LENGTH(A6),A4 ;current length
JSR L09FBE(PC) ;*/undomodify BSR L09FBE
BSR L07D56
MOVE.W D6,D0
MOVE.W 4(A6,A4.L),D2
MOVE.W 2(A7),D6
SWAP D4
L07C2C MOVE.W D2,0(A6,A0.L)
MOVE.W D0,2(A6,A0.L)
MOVE.W D0,4(A6,A4.L)
ADDQ.W #4,A0
ADD.W D4,D0
BSR.S L07C4E
BEQ.S L07C2C
MOVE.W (A7),D5
MOVE.W D5,0(A6,A0.L)
MOVE.W D5,$02(A6,A0.L)
ADDQ.W #4,A7
BRA.S L07C7A
L07C4E MOVE.W 0(A6,A4.L),D1
ADDQ.W #2,A4
ADD.W D1,BV_LENGTH(A6) ;current length
ADDA.W BV_LENGTH(A6),A4 ;current length
CMPA.L BV_PFP(A6),A4 ;program running ptr
BGE.S L07C72
MOVE.W 4(A6,A4.L),D2
CMP.W D2,D5
BLT.S L07C6E
MOVEQ #0,D1
RTS
L07C6E MOVEQ #1,D1
RTS
L07C72 MOVEQ #-1,D1
RTS
L07C76 JMP L0A56C(PC) ;*/undomodify BRA L0A56C
L07C7A ST BV_EDIT(A6) ;Program has been
;edited ($ff) or not (0)
JSR L0958E(PC) ;*/undomodify BSR L0958E
BRA.S L07C8A
L07C84 JSR L0A60E(PC) ;*/undomodify BSR L0A60E
BNE.S L07D06
L07C8A BSR.S L07C76
CMPI.W #$8111,D1
BEQ.S L07CB2
CMPI.W #$810A,D1
BEQ.S L07CAE
CMPI.W #$8115,D1
BNE.S L07C84
L07C9E JSR L09072(PC) ;*/undomodify BSR L09072
JSR L09686(PC) ;*/undomodify BSR L09686
BEQ.S L07C84
CMPI.W #$810A,D1
BNE.S L07C9E
L07CAE ADDQ.W #2,A4
BSR.S L07C76
L07CB2 ADDQ.W #2,A4
BSR.S L07C76
CMPI.W #$840A,D1
BEQ.S L07C84
SUBI.W #$F000,D1
BGE.S L07CCE
L07CC2 MOVE.W #$8404,D4
JSR L0A5E0(PC) ;*/undomodify BSR L0A5E0
BNE.S L07C84
BRA.S L07CB2
L07CCE MOVEA.L BV_RIP(A6),A1 ;arith stack
SUBQ.W #6,A1
MOVE.W D1,0(A6,A1.L)
MOVE.L 2(A6,A4.L),2(A6,A1.L)
JSR RI_NINT(PC) ;*/undomodify BSR RI_NINT
MOVE.W 0(A6,A1.L),D1
BSR.S L07D60
BLE.S L07CC2
MOVE.W D1,0(A6,A1.L)
JSR RI_FLOAT(PC) ;*/undomodify BSR RI_FLOAT
MOVE.W 0(A6,A1.L),D0
ADDI.W #$F000,D0
MOVE.W D0,0(A6,A4.L)
MOVE.L $02(A6,A1.L),$02(A6,A4.L)
BRA.S L07CC2
L07D06 MOVE.W BV_LSBEF(A6),D1 ;Invisible top line
BSR.S L07D60
MOVE.W D1,BV_LSBEF(A6) ;Invisible top line
MOVE.W BV_LSBAS(A6),D1 ;Bottom line in window
BSR.S L07D60
MOVE.W D1,BV_LSBAS(A6) ;Bottom line in window
MOVE.W BV_LSAFT(A6),D1 ;Invisible bottom line
BSR.S L07D60
MOVE.W D1,BV_LSAFT(A6) ;Invisible bottom line
MOVEA.L BV_LNBAS(A6),A1 ;line # table
MOVE.W 0(A6,A1.L),D1
BSR.S L07D60
MOVE.W D1,0(A6,A1.L)
ST BV_CONT(A6) ;continue ($80) or stop (0)
BSR.S L07D56
SUBQ.W #4,A0
MOVE.L 0(A6,A0.L),D1
JSR L04FE8(PC) ;*/undomodify BSR L04FE8
MOVEQ #0,D2
MOVEQ #0,D5
SUBA.L A0,A0
JSR L090A2(PC) ;*/undomodify BSR L090A2
MOVEA.L D0,A0
JSR L08FE6(PC) ;*/undomodify BSR L08FE6
MOVEQ #0,D0
RTS
L07D56 MOVEA.L BV_VVBAS(A6),A0 ;variable values
ADDA.L A3,A0
ADDQ.W #4,A0
RTS
L07D60 CMP.W D6,D1
BLE.S L07D76
CMP.W D1,D5
BLT.S L07D76
BSR.S L07D56
L07D6A CMP.W 0(A6,A0.L),D1
ADDQ.W #4,A0
BGT.S L07D6A
MOVE.W -$02(A6,A0.L),D1
L07D76 RTS
BAS_REPOrt:
MOVEQ #0,D1
JSR L065E8(PC) ;*/undomodify BSR L065E8
MOVE.L $C2(A6),D0 ;Not listet in Adrian
;Dickens !!!
MOVE.W BV_LINUM(A6),-(A7) ;current line #
MOVE.W $C6(A6),BV_LINUM(A6) ;make ??? the current line
;number
JSR L09BDC(PC) ;*/undomodify BSR L09BDC
MOVE.W (A7)+,BV_LINUM(A6) ;get back old line #
MOVEQ #0,D0
RTS
BAS_CLEAr:
MOVEQ #0,D6
MOVEQ #0,D0
MOVE.W #$FFFF,BV_NXLIN(A6) ;line # to start after
BRA.S L07DE0
BAS_RUN:
JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
BNE.S L07E1E
MOVEQ #$06,D6
MOVE.W D7,BV_NXLIN(A6) ;line # to start after
SUBQ.W #1,D3
BLT.S L07E14
BEQ.S L07DBA
MOVEQ #-$0F,D0
RTS
L07DBA MOVE.W 0(A6,A1.L),BV_NXLIN(A6) ;line # to after
MOVE.B D7,$8A(A6) ;which statement to start
;after
ADDQ.L #2,BV_RIP(A6) ;arith stack
BRA.S L07E14
BAS_MERGe:
BSR.S L07E30
MOVEQ #$0E,D6
TST.B $6F(A6) ;single line execution on
;or off ?
BNE.S L07DF6
BAS_MRUN:
BSR.S L07E30
MOVEQ #$0C,D6
BSR.S L07E20
BNE.S L07E0E
MOVE.W D7,BV_NXLIN(A6) ;line # to start after
L07DE0 TST.B $6F(A6) ;single line execution on
;or off ?
BNE.S L07E14
MOVE.W BV_LINUM(A6),BV_NXLIN(A6) ;current line # ->
;line to start
MOVE.B $6C(A6),$8A(A6) ;current statement on line
;-> statement
BRA.S L07E14 ;to start after
BAS_LOAD:
MOVEQ #$0A,D6
L07DF6 BSR.S L07E20
BRA.S L07E0E
BAS_LRUN:
MOVEQ #$08,D6
BSR.S L07E20
BNE.S L07E0E
MOVE.W D7,BV_NXLIN(A6) ;line # to start after
BRA.S L07E14
BAS_NEW:
MOVEQ #$02,D6
BRA.S L07E0C
BAS_STOP:
MOVEQ #$04,D6
L07E0C MOVEQ #0,D0
L07E0E MOVE.W #$FFFF,BV_NXLIN(A6) ;line # to start after
L07E14 SF BV_CONT(A6) ;STOP processing flag
MOVE.W D6,$8C(A6) ;which stop number set
TST.L D0
L07E1E RTS
; --------------------------------------------------------------
;*/beginoverlay
L07E20:
bra L07E20fix
;*/removecode MOVEQ #$01,D4
;*/removecode JSR L069C4(PC)
;*/removecode BNE.S L07E1E
;*/removecode MOVE.L A0,BV_COMCH(A6) ;Command channel
;*/removecode MOVEQ #0,D0
;*/removecode RTS
NOP07E30:
DCB.w ($7E30-(NOP07E30-ORG0))/2,$4E71
;*/endoverlay
; --------------------------------------------------------------
L07E30 TST.B BV_UNRVL(A6) ;Need to unravel
;($ff) or not (0)
BNE.S L07E44
MOVE.L BV_RTP(A6),D0 ;return table running ptr
SUB.L BV_RTBAS(A6),D0 ;return table
BEQ.S L07E44
ADDQ.W #4,A7
MOVEQ #-$13,D0
L07E44 RTS
BAS_RETRy:
SUBQ.B #1,BV_CNSTM(A6) ;Statement to continue from
BGE.S BAS_CONTinue
SF BV_CNSTM(A6) ;Statement to CONTINUE from
BAS_CONTinue:
SF $C0(A6) ;not documented !!!
MOVEQ #$10,D6
BRA.S L07E0C
BAS_TRA:
JSR CA_GTLIN(PC) ;*/undomodify BSR CA_GTLIN
BNE.S L07E8A
CLR.L D2
SUBQ.W #1,D3
BEQ.S L07E78
SUBQ.W #1,D3
BNE.S L07E8C
ADDQ.L #4,BV_RIP(A6) ;arith stack
MOVE.L 4(A6,A1.L),D2
BNE.S L07E78
MOVE.L #(MSG_LIST-ORG0),D2 ;*/modify MOVE.L $BFE6,D2
;error message pointers
L07E78 ADDQ.L #4,BV_RIP(A6) ;arith stack
MOVE.L 0(A6,A1.L),D1
MOVEQ #$24,D0 ;not defined in advanced
;user guide !!!!!!
TRAP #1
TST.L D0
BMI.S L07E8C
MOVEQ #0,D0
L07E8A RTS
L07E8C:
MOVEQ #-15,D0 ;Bad parameter
RTS
; --------------------------------------------------------------
;*/beginundoinsert
; Procedure to disable the Directory device driver search list
CLR_SEALst:
; BSET #0,$28002
; MOVEQ #0,D0
; RTS
; Procedure to enable Overflow error on arithmetic operations
OV_ON:
; BCLR #1,$28002
; MOVEQ #0,D0
; RTS
; Procedure to disable Overflow error on arithmetic operations
OV_OFF:
; BSET #1,$28002
; MOVEQ #0,D0
; RTS
;*/endundoinsert
; --------------------------------------------------------------
TURNTO:
BSR L07F24
BNE.S L07ED0
BRA.S L07EA6
TURN:
BSR L07F24
BNE.S L07ED0
BSR L07F42
JSR RI_ADD(PC) ;*/undomodify BSR RI_ADD
L07EA6 LEA L07F52(PC),A3 ;table for TURN operations
LEA $0006(A1),A4
SUBQ.W #6,A1
MOVE.W #$0809,0(A6,A1.L)
MOVE.L #$5A000000,$02(A6,A1.L)
JSR RI_EXECB(PC) ;*/undomodify BSR RI_EXECB
MOVE.W 0(A6,A1.L),$10(A6,A2.L)
MOVE.L $02(A6,A1.L),$12(A6,A2.L)
L07ECE MOVEQ #0,D0
L07ED0 RTS
BAS_PENUp:
MOVEQ #0,D4
BRA.S L07ED8
BAS_PENDown:
MOVEQ #$01,D4
L07ED8 JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE.S L07ED0
MOVE.B D4,$16(A6,A2.L)
BRA.S L07ECE
BAS_MOVE:
BSR.S L07F24
BNE.S L07F22
BSR.S L07F42
SUBQ.W #6,A1
MOVE.W #$07FB,0(A6,A1.L)
MOVE.L #$477D1A89,$02(A6,A1.L)
JSR RI_MULT(PC) ;*/undomodify BSR RI_MULT
JSR L06D6E(PC) ;*/undomodify BSR L06D6E
JSR L06D7E(PC) ;*/undomodify BSR L06D7E
LEA L07F5A(PC),A3
LEA $0018(A1),A4
JSR RI_EXECB(PC) ;*/undomodify BSR RI_EXECB
JSR L06D8E(PC) ;*/undomodify BSR L06D8E
TST.B $16(A6,A2.L)
BEQ.S L07ECE
MOVEQ #$31,D0 ;SD.LINE plots a line
TRAP #4
TRAP #3
L07F22 RTS
L07F24 MOVE.W #$100,D1
JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE.S L07F40
MOVE.L BV_RIP(A6),-(A7) ;arith stack
JSR GET_REAL(PC) ;*/undomodify BSR GET_REAL
MOVE.L (A7)+,BV_RIP(A6) ;arith stack
TST.L D0
L07F40 RTS
L07F42 SUBQ.W #6,A1
MOVE.W $10(A6,A2.L),0(A6,A1.L)
MOVE.L $12(A6,A2.L),$02(A6,A1.L)
RTS
L07F52 ;table for TURN operations
DC.L $FAF41004,$080E0C00
L07F5A DC.L $FAF4180E,$EE0AFAF4,$1A0EE80A
DC.W 0
BAS_WIDTh:
JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L07F78
SUBQ.W #1,D3
BNE.S L07F7A
MOVE.W 0(A6,A1.L),$22(A6,A2.L)
L07F78 RTS
L07F7A:
MOVEQ #-15,D0
RTS
BAS_WINDow:
JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L07FA2
MOVEQ #$0D,D4
MOVEQ #-$80,D1
CLR.W D2
BRA.S L07F9C
BAS_BLOCk:
JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L07FA2
MOVEQ #$2E,D4 ;SD.FILL fill rectangular
;block within window
SUBQ.W #4,D3
JSR L07FD4(PC) ;*/undomodify BSR.S L07FD4
;*/undomodify nop
BNE.S L07FA2
L07F9C:
SUBQ.W #6,A1
JMP L07FC4(PC) ;*/undomodify BRA.S L07FC4
;*/undomodify nop
L07FA2:
RTS
BAS_BORDer:
JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L07FA2
MOVEQ #$0C,D4 ;SD.BORDR sets the border
;width and colour
MOVEQ #-$80,D1
CMPI.W #1,D3
BLS.S L07FBC
SUBQ.W #1,D3
JSR L07FD4(PC) ;*/undomodify BSR.S L07FD4
;*/undomodify nop
BNE.S L07FA2
L07FBC:
MOVE.W 0(A6,A1.L),D2
JMP L07FC4(PC) ;*/undomodify nop
;*/undomodify nop
L07FC4:
MOVE.L D4,D0
MOVEQ #-1,D3
MOVE.L A1,-(A7)
TRAP #4
TRAP #3
MOVEA.L (A7)+,A1
TST.L D0
RTS
L07FD4 MOVE.W 0(A6,A1.L),D1
SUBQ.L #2,A1
SUBQ.W #1,D3
BEQ.S L0801A
CMPI.W #$07,D1
BHI.S L08024
ORI.W #$18,D1
CMPI.W #$01,D3
BEQ.S L08004
ANDI.W #$0007,D1
MOVE.W 0(A6,A1.L),D2
SUBQ.L #2,A1
SUBQ.W #1,D3
LSL.W #3,D1
CMPI.W #$0007,D2
BHI.S L08024
OR.W D2,D1
L08004 MOVE.W 0(A6,A1.L),D2
SUBQ.L #2,A1
SUBQ.W #1,D3
BNE.S L08024
CMPI.W #$0007,D2
BHI.S L08024
EOR.W D2,D1
LSL.W #3,D1
OR.W D2,D1
L0801A CMPI.W #$00FF,D1
BHI.S L08024
L08020 MOVEQ #0,D0
RTS
L08024 MOVEQ #-$0F,D0
RTS
L08028 CMPI.W #$0001,D3
BNE.S L08024
MOVE.W 0(A6,A1.L),D1
CMP.W D3,D1
BHI.S L08024
BRA.S L08020
L08038 JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE.S L08052
SEA_PARA ;search for parameter
JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
BNE.S L08052
ADD.L D3,D3
ADD.L D3,BV_RIP(A6) ;arith stack
ADDA.L D3,A1
SUBQ.L #2,A1
LSR.W #1,D3
MOVEQ #0,D0
L08052 RTS
BAS_ACOS:
LEA RI_ACOS(PC),A4
BRA.S L080C6
BAS_ACOT:
LEA RI_ACOT(PC),A4
BRA.S L080C6
BAS_ASIN:
LEA RI_ASIN(PC),A4
BRA.S L080C6
BAS_ATAN:
LEA RI_ATAN(PC),A4
BRA.S L080C6
BAS_COS:
LEA RI_COS(PC),A4
BRA.S L080C6
BAS_COT:
LEA RI_COT(PC),A4
BRA.S L080C6
BAS_EXP:
LEA RI_EXP(PC),A4
BRA.S L080C6
BAS_LN:
LEA RI_LN(PC),A4
BRA.S L080C6
BAS_LOG10:
LEA RI_LOG10(PC),A4
BRA.S L080C6
BAS_SIN:
LEA RI_SIN(PC),A4
BRA.S L080C6
BAS_SQRT:
LEA RI_SQRT(PC),A4
BRA.S L080C6
BAS_TAN:
LEA RI_TAN(PC),A4
BRA.S L080C6
BAS_DEG:
LEA RI_DIV(PC),A4
BRA.S L080A6
BAS_RAD:
LEA RI_MULT(PC),A4
L080A6 JSR GET_REAL(PC) ;*/undomodify BSR GET_REAL
BNE.S L080DE
BSR L08162
SUBQ.W #6,A1
MOVE.W #$07FB,0(A6,A1.L)
MOVE.L #$477D1A89,$02(A6,A1.L)
BRA.S L080D6
BAS_ABS:
LEA RI_ABS(PC),A4
L080C6 JSR GET_REAL(PC) ;*/undomodify BSR GET_REAL
BNE.S L080DE
MOVEQ #$30,D1
JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
MOVEA.L BV_RIP(A6),A1 ;arith stack
L080D6 JSR (A4)
L080D8 MOVEQ #$02,D4
L080DA MOVE.L A1,BV_RIP(A6) ;arith stack
L080DE RTS
L080E0:
MOVEQ #$03,D4
MOVEQ #0,D0
BRA.S L080DA
L080E6:
ADDQ.W #4,A7 ;*/note never called!!!
RTS
BAS_RND:
MOVEQ #$01,D5
OR.L BV_RAND(A6),D5 ;Random number
MOVE.L D5,D6
MULU #$0163,D5
SWAP D6
MULU #$0163,D6
SWAP D6
CLR.W D6
ADD.L D6,D5
MOVE.L D5,BV_RAND(A6) ;New random number
JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
BNE.S L080DE
SUBQ.W #1,D3
BEQ.S L0812A
BGT.S L08124
BSR.L L08162 ;*/undomodify BSR.S L08162
;*/undomodify nop
MOVE.L D5,D1
LSR.L #1,D1
MOVE.W #$0800,D0
L0811E JSR L04830(PC) ;*/undomodify BSR L04830
BRA.S L080D8
L08124 MOVE.W 0(A6,A1.L),D3
ADDQ.W #2,A1
L0812A MOVE.W 0(A6,A1.L),D2
SUB.W D3,D2
BLT.S L0819E
ADDQ.W #1,D2
SWAP D5
MULU D2,D5
SWAP D5
ADD.W D3,D5
L0813C MOVE.W D5,0(A6,A1.L)
BRA.S L080E0
BAS_PI:
CMPA.L A3,A5
BNE.S L0819E
BSR.S L08162
MOVE.W #$0802,D0
MOVE.L #$6487ED51,D1
BRA.S L0811E
BAS_INT:
JSR GET_INT4(PC) ;*/undomodify BSR GET_INT4
BNE.S L080DE
MOVE.L 0(A6,A1.L),D1
ADDQ.W #4,A1
BRA.S L08186
L08162 JSR L04E4C(PC) ;*/undomodify BSR L04E4C
MOVEA.L BV_RIP(A6),A1 ;arith stack
RTS
BAS_PEEK:
BSR.S L0818C
MOVEQ #0,D5
MOVE.B (A4),D5
BRA.S L0817A
PEEK_W:
BSR.S L0818C
BCS.S L0819E
MOVE.W (A4),D5
L0817A ADDQ.W #2,A1
BRA.S L0813C
PEEK_L:
BSR.S L0818C
BCS.S L0819E
MOVE.L (A4),D1
L08184 ADDQ.W #4,A1
L08186 MOVE.W #$081F,D0
BRA.S L0811E
L0818C JSR GET_INT4(PC) ;*/undomodify BSR GET_INT4
BNE L0821A
MOVEA.L 0(A6,A1.L),A4
MOVE.L A4,D1
ROR.W #1,D1
RTS
L0819E MOVEQ #-$0F,D0
L081A0 RTS
BAS_RESPr:
BSR.S L0818C
MOVEQ #$0E,D0 ;MT.ALRES allocate resident
;procedure area
MOVE.L 0(A6,A1.L),D1
MOVEA.L A1,A4
TRAP #1
MOVE.L A0,D1
MOVEA.L A4,A1
TST.L D0
BEQ.S L08184
BRA.S L081A0
L081B8:
; --------------------------------------------------------------
;*/beginfilling
;*/removecode BEEPING:
;*/removecode CMPA.L A3,A5
;*/removecode BNE.S L0819E
;*/removecode BSR.S L08162
;*/removecode MOVEQ #1,D1
;*/removecode AND.B $28096,D1 ;Sound status
;*/removecode BRA.S L08186
NOP081C8:
DCB.w ($81C8-(NOP081C8-ORG0))/2,$4E71
;*/endfilling
; --------------------------------------------------------------
L081C8:
BAS_EOF:
CMPA.L A3,A5
BNE.S L081D6
JSR L066FA(PC) ;*/undomodify BSR L066FA
SUBQ.B #1,$97(A6) ;next DATA item to read
BRA.S L081E0
L081D6 BSR L0825A
MOVEQ #0,D0 ;IO.PEND check for pending
;input
MOVEQ #0,D3
TRAP #3
L081E0:
MOVEQ #-$0A,D4
SUB.L D0,D4
BSR L08162
MOVEQ #0,D1
TST.L D4
BNE.S L08186
MOVEQ #$01,D1
BRA.S L08186
BAS_VER:
CMPA.L A3,A5
BNE.S L0819E
BSR L08162
SUBQ.W #4,A1 ;*/modify SUBQ.W #6,A1
MOVE.W #2,0(A6,A1.L) ;*/modify MOVE.L $BFFA,0( )
nop ;*/modify
MOVE.W #'JS',2(A6,A1.L) ;*/modify MOVE.W $BFFE,4( )
nop ;*/modify
BRA.S L08252
BAS_INKEy:
BSR.S L0825A
MOVE.L A0,-(A7)
BSR L08162
JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
L0821A:
BNE.S L08262
MOVEA.L (A7)+,A0
CMPI.W #$0001,D3
BGT L0819E
BLT.S L0822E
MOVE.W 0(A6,A1.L),D3
ADDQ.W #2,A1
L0822E MOVEA.L A1,A4
MOVEQ #1,D0 ;IO.FBYTE fetch a byte
TRAP #3
MOVEA.L A4,A1
ADDQ.L #1,D0
BEQ.S L0824C
SUBQ.L #1,D0
BNE.S L08264
SUBQ.W #4,A1
L08240 MOVE.B D1,2(A6,A1.L)
MOVE.W #1,0(A6,A1.L)
BRA.S L08252
L0824C SUBQ.W #2,A1
CLR.W 0(A6,A1.L)
L08252 MOVEQ #$01,D4
MOVEQ #0,D0
BRA L080DA
L0825A MOVEQ #0,D1
JSR L065E8(PC) ;*/undomodify BSR L065E8
BEQ.S L08264
L08262 ADDQ.W #4,A7
L08264 RTS
BAS_CHR:
BSR L08162
JSR GET_INT2(PC) ;*/undomodify BSR GET_INT2
BNE.S L08264
MOVE.W 0(A6,A1.L),D1
SUBQ.W #2,A1
BRA.S L08240
FILLstr:
SUBQ.W #8,A5
BSR.S L082CE
BEQ L0819E
SUBQ.L #1,D1
BGT.S L0828A
MOVE.B $02(A6,A1.L),$03(A6,A1.L)
L0828A MOVE.W $02(A6,A1.L),D5
ADDQ.L #4,D1
BCLR #0,D1
ADDA.L D1,A1
MOVE.L A1,BV_RIP(A6) ;arith stack
MOVEA.L A5,A3
ADDQ.W #8,A5
JSR GET_INT2(PC) ;*/undomodify BSR GET_INT2
BNE.S L08264
ADDQ.L #2,BV_RIP(A6) ;arith stack
MOVEQ #0,D4
MOVE.W 0(A6,A1.L),D4
BLT L0819E
BEQ.S L08252
MOVE.L D4,D1
BSR.S L082F2
L082B8 SUBQ.W #2,A1
MOVE.W D5,0(A6,A1.L)
SUBQ.L #2,D1
BGT.S L082B8
MOVE.W D4,0(A6,A1.L)
BRA.S L08252
BAS_LEN:
BSR.S L082CE
MOVE.W D1,D5
BRA.S L082E6
L082CE JSR GET_STR(PC) ;*/undomodify BSR GET_STR
BNE.S L08262
MOVEQ #0,D5
MOVEQ #0,D1
MOVE.W 0(A6,A1.L),D1
RTS
BAS_CODE:
BSR.S L082CE
BEQ.S L082EE
MOVE.B $02(A6,A1.L),D5
L082E6 ADDQ.L #1,D1
BCLR #0,D1
ADDA.L D1,A1
L082EE BRA L0813C
L082F2 ADDQ.L #3,D1
BCLR #0,D1
MOVE.L D1,-(A7)
JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
MOVEA.L BV_RIP(A6),A1 ;arith stack
MOVE.L (A7)+,D1
L08304 RTS
BAS_DIMN:
MOVE.B 0(A6,A3.L),D1
SUBQ.B #3,D1
BNE.S L0834E
MOVE.L A3,-(A7)
ADDQ.W #8,A3
JSR CA_GTINT(PC) ;*/undomodify BSR CA_GTINT
MOVEA.L (A7)+,A3
BNE.S L08304
SUBQ.W #1,D3
BGT.S L08304
BEQ.S L08328
BSR.S L0836A
SUBQ.W #2,A1
MOVEQ #$01,D1
BRA.S L0832E
L08328 MOVE.W 0(A6,A1.L),D1
BLE.S L08352
L0832E MOVEA.L $04(A6,A3.L),A2
ADDA.L BV_VVBAS(A6),A2 ;variable values
MOVE.W $04(A6,A2.L),D2
SUB.W D1,D2
BLT.S L08352
ADDQ.W #2,A2
LSL.W #2,D1
ADDA.W D1,A2
MOVE.W 0(A6,A2.L),0(A6,A1.L)
BRA L080E0
L0834E BSR.S L0836A
SUBQ.W #2,A1
L08352 MOVEQ #0,D5
BRA.S L082EE
BAS_IDATe:
CMPA.L A3,A5
BNE L0819E
BSR.S L0836A
MOVEQ #$13,D0 ;MT.RCLCK reads the clock
TRAP #1
BCLR #$1F,D1
BRA L08186
L0836A BRA L08162
L0836E:
; --------------------------------------------------------------
;*/beginoverlay
BAS_KEYRow:
JSR GET_INT2(PC) ;*/undomodify BSR GET_INT2
SUBQ.W #8,A7
BNE.S L083B0
MOVEA.L A7,A3
MOVE.B #9,(A3) ;IPC read keyboard row
MOVE.B #1,1(A3) ;one parameter
clr.l 2(a3) ;*/modify MOVE.L #0,2(A3)
MOVE.B 1(A6,A1.L),6(A3) ;row number
MOVE.B #2,7(A3)
MOVE.L A1,-(A7)
MOVEQ #$11,D0 ;MT.IPCOM sends a command
;(A3) to IPC
TRAP #1
MOVEA.L (A7)+,A1
MOVE.W D1,0(A6,A1.L)
MOVEQ #$03,D4
moveq #MT.INF,d0 ;*/modify
trap #1 ;*/modify
move.l SV_KEYQ(a0),a2 ;*/modify MOVEA.L $0002804C,A2
MOVE.L Q_NXTOUT(A2),Q_NEXTIN(A2)
L083B0 ADDQ.W #8,A7
RTS
NOP083B4:
DCB.w ($83B4-(NOP083B4-ORG0))/2,$4E71
;*/endoverlay
; --------------------------------------------------------------
L083B4:
BAS_DATE:
LEA CN_DATE(PC),A4
BRA.S L083BE
BAS_DAY:
LEA CN_DAY(PC),A4
L083BE JSR L04E4C(PC) ;*/undomodify BSR L04E4C
CMPA.L A3,A5
BLE.S L083D4
JSR GET_INT4(PC) ;*/undomodify BSR GET_INT4
BNE.S L083E6
MOVE.L 0(A6,A1.L),D1
ADDQ.L #4,A1
BRA.S L083DC
L083D4 MOVEQ #$13,D0 ;MT.RCLCK reads the clock
;-> D1
TRAP #1
MOVEA.L BV_RIP(A6),A1 ;arith stack
L083DC JSR (A4)
MOVEQ #1,D4
MOVE.L A1,BV_RIP(A6) ;arith stack
MOVEQ #0,D0
L083E6 RTS
ERR_BL BSR.S L08414
ERR_RO BSR.S L08414
ERR_NI BSR.S L08414
ERR_OV BSR.S L08414
ERR_XP BSR.S L08414
ERR_FE BSR.S L08414
ERR_BP BSR.S L08414
ERR_FF BSR.S L08414
ERR_TE BSR.S L08414
ERR_BN BSR.S L08414
ERR_DF BSR.S L08414 ;*/mend BRA.S $8414
ERR_EF BSR.S L08414
ERR_IU BSR.S L08414
ERR_EX BSR.S L08414
ERR_NF BSR.S L08414
ERR_NO BSR.S L08414
ERR_BO BSR.S L08414
ERR_OR BSR.S L08414
ERR_OM BSR.S L08414
ERR_NJ BSR.S L08414
ERR_NC BSR.S L08414
NOP
L08414:
PEA L08414(PC)
MOVE.L (A7)+,D4
SUB.L (A7)+,D4
LSR.L #1,D4
BSR.S L08446
SUBQ.W #6,A1
CLR.W 0(A6,A1.L)
CLR.L 2(A6,A1.L)
ADD.L $C2(A6),D4 ;
BNE.S L0843C
MOVE.W #$0801,0(A6,A1.L)
MOVE.B #$40,2(A6,A1.L)
L0843C MOVEQ #2,D4
L0843E MOVE.L A1,BV_RIP(A6) ;arith stack
MOVEQ #0,D0
RTS
L08446 CMPA.L A3,A5
BNE.S L08454
JSR L04E4C(PC) ;*/undomodify BSR L04E4C
MOVEA.L BV_RIP(A6),A1 ;arith stack
RTS
L08454 ADDQ.W #4,A7
MOVEQ #-15,D0
RTS
BAS_ERNUm:
BSR.S L08446
SUBQ.W #2,A1
MOVE.W $C4(A6),0(A6,A1.L) ;
L08464 MOVEQ #3,D4
BRA.S L0843E
BAS_ERLIn:
BSR.S L08446
SUBQ.W #2,A1
MOVE.W $C6(A6),0(A6,A1.L) ;
BRA.S L08464
; --------------------------------------------------------------
;*/endfile